package day14.com.homework;

import java.util.*;

// 抽奖
public class TestGuessPrize {

    // 添加抽奖人信息功能
    public static List<Person> addPersons(){
        // 准备存储抽奖人的容器
        List<Person> personList = new ArrayList<>();
        // 准备一个每次录入的抽奖人姓名容器
        List<String> personNamesList = new ArrayList<>();
        //通过键盘录入抽奖人姓名，多个抽奖人用“|”号分割。
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("请输入抽奖人姓名：");
            //scanner.nextLine();
            String inputPersons = scanner.next();
            // 分割 split("\\|")
            String[] personNames = inputPersons.split("\\|");
            //输入完成后，控制台打印抽奖人姓名
            System.out.println(Arrays.toString(personNames));// 打印抽奖人的姓名
            // 把每次录入的抽奖人姓名录入到容器当中
            personNamesList.addAll(Arrays.asList(personNames));
            //并提示YES OR NO来表示确认
            System.out.println("请输入Yes or No:");
            String isYes = scanner.next();
            if ("Yes".equalsIgnoreCase(isYes)){
                break;// 终止循环
            }
        }
        //一旦确认，自动为抽奖人分配ID，开始抽奖
        for (String personName : personNamesList) {
            // 有一个抽奖人，创建一个抽奖人对象(id,name)
            Person person = new Person(personName);
            personList.add(person);
        }
        return personList;
    }
    // 初始化奖品信息
    public static List<Prize> initPrizes() {
        //1等奖 1个 IPhone手机  2等奖 3个 电动车   3等奖  4个。钢笔四支 英雄牌
        List<Prize> prizeList = new ArrayList<>();
        // 添加一等奖
        prizeList.add(new Prize("一等奖",1,"IPhone手机"));
        // 添加二等奖
        prizeList.add(new Prize("二等奖",3,"雅迪电动车"));
        // 添加三等奖
        prizeList.add(new Prize("三等奖",4,"英雄牌钢笔"));// 0
        return prizeList;
    }
    public static void main(String[] args) {

        int[] arr = {1,2,3};

        // 准备一个输入类
        Scanner scanner = new Scanner(System.in);
        // 准备一个随机类
        Random random = new Random();
        // 添加抽奖人信息
        List<Person> personList = addPersons();
        // 初始化奖品信息
        List<Prize> prizeList = initPrizes();
        // 准备一个中奖信息容器
        List<Result> resultList = new ArrayList<>();
        //每次抽奖均打印姓名，然后键盘输入next开始第二次抽奖
        while (true) {
            // 抽奖
            // 抽奖人是随机的
            // 选出一个随机数  [0,personList.size()-1]  [a,b]---->nextInt(b-a+1)+a;
            // nextInt(bound) ---->[0,bound-1]
            int personIndex = random.nextInt(personList.size());
            // 取出一个抽奖人
            Person person = personList.get(personIndex);
            // 奖品也是随机的  假设抽奖的奖品是从小奖到大奖的顺序 三等奖抽完再抽二等奖，二等奖抽完再抽一等奖
            // 先取三等奖 2  从末位往前开始减少 prizeList.size()-1
            Prize prize = prizeList.get(prizeList.size()-1);//prizeList.size()-1
            // 打印中奖人的姓名
            System.out.println("中奖人的姓名为：" + person.getName());
            // 把中奖的信息需要汇集到中奖结果中
            resultList.add(new Result(person.getId(),person.getName(),prize.getPrizeName(),prize.getLevel()));
            // 接下来需要剔除参与中将人，还需要减少奖品的数量
            // 删除中将人
            personList.remove(personIndex);// 删除掉
            // 减少奖品的数量
            if (prize.getCount() > 0) {
                prize.setCount(prize.getCount()-1);
            } else {
                prizeList.remove(prize);
            }
            // 判断抽奖什么时候结束
            if (personList.size() == 0 || prizeList.size() == 0) {
                break;
            }
            // 每次抽奖结束后，需要输入一个信息 判断是否位next
            System.out.println("请输入next是否继续：");
            String isNext = scanner.next();
            if (!"next".equalsIgnoreCase(isNext)) {
                break;
            }
        }
        // 结束的时候打印中奖汇总结果
        // 遍历中奖结果
        for (Result result : resultList) {
            System.out.println(result);
        }

    }
}
